#include <opencv/cv.h>
#include <opencv/highgui.h>
#include <opencv2/features2d/features2d.hpp>
#include <opencv2/nonfree/features2d.hpp>
#include <opencv2/flann/flann.hpp>
#include <opencv2/flann/flann_base.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <memory>
#include "PointData.h"
#include <tr1/memory>

using namespace std;
using namespace cv;
using namespace tr1;
typedef shared_ptr<PointData> PointDataP;


class Frame
{
	public:
	map<int,KeyPoint> keypoints;
    map<int,PointDataP > keypoints_data;
    map<int,Mat> keypoints_template;
    map<int,pair<float,float> > keypoints_offsets;
    Mat* descriptors;
	Mat R;
	Mat t;
	Frame(map<int, KeyPoint>& keypoints, map<int,PointDataP>& keypoints_data):keypoints(keypoints),keypoints_data(keypoints_data){descriptors = NULL;}
	void setRT(Mat R, Mat t);
};

